@echo off
chcp 65001 >nul 2>&1
setlocal EnableDelayedExpansion

REM Flutter Build APK Windows 双击执行脚本
REM 作用：构建 Flutter 项目的 Android APK 安装包

echo 📱 开始构建 Flutter APK...
echo ======================================

REM 获取脚本所在目录（项目根目录）
set "SCRIPT_DIR=%~dp0"
cd /d "%SCRIPT_DIR%"

echo 📁 当前目录: %CD%
echo ⏰ 开始时间: %DATE% %TIME%

REM 检查是否为 Flutter 项目
if not exist "pubspec.yaml" (
    echo ❌ 错误：当前目录不是 Flutter 项目！
    echo 请确保脚本位于 Flutter 项目根目录。
    pause
    exit /b 1
)

echo ✅ 检测到 Flutter 项目

REM 显示项目信息
for /f "tokens=2 delims= " %%a in ('findstr "^name:" pubspec.yaml 2^>nul') do set "PROJECT_NAME=%%a"
for /f "tokens=2 delims= " %%a in ('findstr "^version:" pubspec.yaml 2^>nul') do set "PROJECT_VERSION=%%a"

if defined PROJECT_NAME (
    echo 📄 项目名称: !PROJECT_NAME!
)
if defined PROJECT_VERSION (
    echo 🏷️  项目版本: !PROJECT_VERSION!
)

REM 检查 Android 目录是否存在
if not exist "android" (
    echo ❌ 错误：未找到 android 目录！
    echo 请确保项目支持 Android 平台。
    pause
    exit /b 1
)

echo ✅ 检测到 Android 平台支持
echo.

REM 询问构建模式
echo 🔍 请选择构建模式：
echo    1. Release 模式 ^(生产环境，推荐^)
echo    2. Debug 模式 ^(开发调试^)
echo    3. Profile 模式 ^(性能分析^)
echo.

REM 使用 choice 命令让用户选择，3秒后自动选择1
choice /c 123 /t 3 /d 1 /m "请选择 (1-3)，3秒后自动选择Release模式"
set CHOICE_RESULT=%ERRORLEVEL%

set "BUILD_MODE=release"
set "MODE_DESC=Release 发布模式"

if %CHOICE_RESULT%==2 (
    set "BUILD_MODE=debug"
    set "MODE_DESC=Debug 调试模式"
)
if %CHOICE_RESULT%==3 (
    set "BUILD_MODE=profile"
    set "MODE_DESC=Profile 性能分析模式"
)

echo.
echo 🎯 构建模式: !MODE_DESC!
echo.

REM 显示构建信息
echo 🔍 即将执行的操作：
echo    1. 清理之前的构建文件
echo    2. 获取最新依赖包
echo    3. 构建 APK ^(!MODE_DESC!^)
echo.

echo 🚀 开始自动构建...
echo.

REM 步骤 1: 清理项目
echo 🧹 步骤 1/3: 正在清理项目...
echo ----------------------------------------
call flutter clean
if %ERRORLEVEL% neq 0 (
    echo ❌ 项目清理失败
    pause
    exit /b 1
)
echo ✅ 项目清理完成

echo.

REM 步骤 2: 获取依赖
echo 📦 步骤 2/3: 正在获取依赖包...
echo ----------------------------------------
call flutter pub get
if %ERRORLEVEL% neq 0 (
    echo ❌ 依赖包获取失败
    pause
    exit /b 1
)
echo ✅ 依赖包获取完成

echo.

REM 步骤 3: 构建 APK
echo 🏗️  步骤 3/3: 正在构建 APK ^(!MODE_DESC!^)...
echo ----------------------------------------
echo ⚠️  注意：APK 构建可能需要几分钟时间，请耐心等待...
echo.

REM 根据模式执行不同的构建命令
if "%BUILD_MODE%"=="debug" (
    call flutter build apk --debug
) else if "%BUILD_MODE%"=="profile" (
    call flutter build apk --profile
) else (
    call flutter build apk --release
)

REM 检查构建结果
if %ERRORLEVEL% neq 0 (
    echo.
    echo ❌ APK 构建失败！
    echo ======================================
    echo 可能的原因：
    echo    - Android SDK 未正确配置
    echo    - Java/Kotlin 环境问题
    echo    - 项目配置错误
    echo    - 网络连接问题
    echo.
    echo 💡 建议操作：
    echo    1. 运行 'flutter doctor' 检查环境
    echo    2. 检查 android/app/build.gradle 配置
    echo    3. 清理项目后重新尝试
    goto :end
)

echo.
echo 🎉 APK 构建成功！
echo ======================================

REM 查找生成的 APK 文件
set "APK_DIR=build\app\outputs\flutter-apk"
if not exist "%APK_DIR%" (
    echo ⚠️  警告：未找到 APK 输出目录
    echo 请检查构建过程是否完全成功
    goto :end
)

echo 📂 APK 文件位置:
for /r "%APK_DIR%" %%f in (*.apk) do (
    echo    %%f
)

echo.
echo 🔄 重命名 APK 文件 ^(添加时间戳^)...

REM 生成时间戳 - 简化版本
for /f "tokens=1-6 delims=/:. " %%a in ("%DATE% %TIME%") do (
    set TIMESTAMP=%%c%%a%%b_%%d%%e
)

REM 处理项目信息
if not defined PROJECT_NAME set "PROJECT_NAME=app"
if not defined PROJECT_VERSION set "PROJECT_VERSION=1.0.0"
REM 移除版本号中的+后缀
for /f "tokens=1 delims=+" %%a in ("!PROJECT_VERSION!") do set "PROJECT_VERSION=%%a"

REM 重命名所有APK文件
for /r "%APK_DIR%" %%f in (*.apk) do (
    set "ORIGINAL_FILE=%%~nxf"
    set "NEW_NAME=!PROJECT_NAME!_v!PROJECT_VERSION!_!BUILD_MODE!_!TIMESTAMP!.apk"
    ren "%%f" "!NEW_NAME!" 2>nul
    if !ERRORLEVEL!==0 (
        echo    ✅ !ORIGINAL_FILE! → !NEW_NAME!
    ) else (
        echo    ⚠️  !ORIGINAL_FILE! ^(重命名失败^)
    )
)

echo.
echo 📱 最终 APK 文件:
for /r "%APK_DIR%" %%f in (*.apk) do (
    set "FILE_SIZE_BYTES=%%~zf"
    set /a "FILE_SIZE_MB=!FILE_SIZE_BYTES!/1024/1024"
    echo    📦 %%~nxf ^(~!FILE_SIZE_MB!MB^)
)

echo.
echo 💡 使用说明:
echo    1. 将 APK 文件传输到 Android 设备
echo    2. 在设备上启用 '未知来源' 安装
echo    3. 点击 APK 文件进行安装

echo.
echo 🚀 自动打开 APK 文件夹...
start "" explorer "%APK_DIR%"

:end
echo.
echo ⏰ 完成时间: %DATE% %TIME%
echo ======================================

REM 等待用户按键后关闭
echo.
echo 按任意键关闭窗口...
pause >nul